package Classes.Utils
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.net.URLLoader;
	import flash.net.URLRequest;
	import flash.utils.Dictionary;
	import flash.xml.XMLNode;
	
	public class xmlLoader extends Sprite
	{
		private var myXML:			XML;
		private var myXMLList:		XMLList;
		private var myLoader:		URLLoader = new URLLoader();
		//private var AR_nodes: 		Array = new Array();
		private var contador: 		int;
		private var dicionario:     Dictionary;
		private var key:            String;
		private var value:          String;
		private var loaded:			Boolean;
		private var listaObjetos:	Array;
		
		function xmlLoader(className: String)
		{
			loaded = false;
			
			listaObjetos = new Array();
			
			//Ao completar de carregar, executa função processXML
			myLoader.addEventListener(Event.COMPLETE, processXML);
			
			//carrega o xml com o nome da classe
			myLoader.load(new URLRequest(className + ".lev"));
		}
		
		private function processXML(Evento:Event):void
		{
			//Salva XML em variável
			myXML = new XML(Evento.target.data);
			//Salva os elementos do XMl em uma variável
			myXMLList = myXML.children();
			//trace(myXML);
			
			validarArray();
			//validarDictionary();
			
		}
		
		private function validarArray():void
		{
			contador = 0;
			
			//enquanto existir valor, adiciona o node no array 
			while (myXMLList[contador] != undefined)
			{
				
				dicionario = new Dictionary();
				
				dicionario["x"] = 					myXMLList[contador].children()[0];
				dicionario["y"] = 					myXMLList[contador].children()[1];
				dicionario["width"] = 				myXMLList[contador].children()[2];
				dicionario["height"] = 				myXMLList[contador].children()[3];
				dicionario["artName"] = 			myXMLList[contador].children()[4];
				dicionario["isStatic"] = 			myXMLList[contador].children()[5];
				dicionario["rotation"] = 			myXMLList[contador].children()[7];
				/*dicionario["name"] = 	*/			trace(String(myXMLList[contador]).substr(String(myXMLList[contador]).indexOf('"'), String(myXMLList[contador]).indexOf(' ')));
				
				listaObjetos.push(dicionario);
				
				contador++;
			}
			loaded = true;
			//trace("Dictionary validado")
			//trace(myXMLList)
			//trace(dicionario["Velocidade"])
			
			dispatchEvent(new Event(Event.COMPLETE));
		}
		
		
		public function get objetos():Array
		{
			return(listaObjetos);
		}
		
		public function get leaded():Boolean
		{
			return(leaded);
		}
	}
}